По случаю очередного знаменательного прорыва в области
тортоведения, к Петру Петровичу в гости пришли k экспертов-сладкоежек. Для дорогих гостей Петр Петрович заказал
большой круглый торт, однако, когда деловые разговоры об оптимальном украшении
карамельными розочками подошли к концу и пришло время подавать торт, Петр
Петрович с ужасом обнаружил, что ему доставили торт в форме правильного n-угольника со стороной a и высоты h.
Вкусы экспертов-сладкоежек очень специфичны: они
согласны есть кусочки торта либо в виде треугольников, либо в виде секторов
круга. Если предложить им что-нибудь иное, может случиться все что угодно!
Петр Петрович решил разрезать торт на n треугольных кусочков и раздать их
гостям, но тут же возникла проблема: каждый гость хочет получить как можно
больше торта, при этом всем должно достаться поровну! А если не делится? Все
лишнее Петр Петрович распорядится увезти как можно дальше (возможно, даже на
другую планету), чтобы гости не передрались.
Единственное, что интересует Петра Петровича в этой
непростой ситуации: а каков объем доли торта, которую придется выбросить? Это и
будет вашей задачей.
Вход. Четыре натуральных числа, не превышающих 106:
n, k, a, h – число углов в торте, число гостей,
длина одной стороны торта и его высота соответственно. Известно, что n ≥ 3.
Выход. Выведите одно
вещественное число (с точностью до 4-х знаков после десятичной запятой) – объем
доли торта, которую придется выбросить.
Пример входа 1 4 4 1 1 |
Пример входа 2 4 3 1 1 |
Пример выхода 1 0.0000 |
Пример выхода 2 0.2500 |
геометрия
Вычислим площадь
правильного n-угольника со стороной а. Разобьем его на n треугольников.
Площадь треугольника
KLO найдем как ½ * KL * PO. , следовательно
PO = PL / = ,
SKLO =
½ * KL * PO = ½ * a * =
Объем торта
соответственно равен V = h * n
* SKLO = .
Торт можно разрезать на
n одинаковых секторов. Разделив их на
k гостей поровну,
получится что каждому гостю достанется в точности t = n / k секторов. Объем одного сектора
составит each = V / n. Следовательно после раздачи
оставшийся объем торта составит V – each
* t * k.
Реализация алгоритма
#include <stdio.h>
#include <math.h>
#define PI acos(-1.0)
double n, k, a, h;
double area, vol, each, ans;
int main(void)
{
scanf("%lf %lf %lf %lf",&n,&k,&a,&h);
area = 1.0 * n * a *
a / (tan (1.0 * PI / n) * 4.0);
vol = area * h;
each = vol / n;
int t = n / k;
ans = vol - t * each
* k;
printf("%lf\n",ans);
return 0;
}